//
//  ZYAdapterImp.h
//  DesignMode
//
//  Created by wangzhipan on 2024/10/29.
//

/*
 适配器模式：
    主要用于，希望复用之前已经存在的实现，但是新接口又与复用的旧接口环境不一致的情况
    在遗留代码复用、类库迁移等方面非常有用
 */

#import <Foundation/Foundation.h>

//新接口，新的实现方法
@protocol INewTarget <NSObject>
- (void)process;
@end


//老接口
@protocol IOldAdaptee <NSObject>
- (int)barData;
- (void)foo:(int)data;
@end

//遗留老的类
@interface ZYOldClass : NSObject<IOldAdaptee>

@end


//对象适配器，实现INewTarget协议
@interface ZYNewTarget : NSObject<INewTarget>
- (instancetype)initWithOldAdaptee:(id<IOldAdaptee>)adaptee; //组合adaptee
@end


@interface ZYAdapterMainPage : NSObject

@end
